.\" Man page generated from reStructuredText.
.
.TH "RBDMAP" "8" "Mar 12, 2022" "dev" "Ceph"
.SH NAME
rbdmap \- map RBD devices at boot time
.
.nr rst2man-indent-level 0
.
.de1 rstReportMargin
\\$1 \\n[an-margin]
level \\n[rst2man-indent-level]
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
-
\\n[rst2man-indent0]
\\n[rst2man-indent1]
\\n[rst2man-indent2]
..
.de1 INDENT
.\" .rstReportMargin pre:
. RS \\$1
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
. nr rst2man-indent-level +1
.\" .rstReportMargin post:
..
.de UNINDENT
. RE
.\" indent \\n[an-margin]
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
.nr rst2man-indent-level -1
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
..
.SH 提纲
.nf
\fBrbdmap map\fP
\fBrbdmap unmap\fP
.fi
.sp
.SH 描述
.sp
\fBrbdmap\fP 是个 shell 脚本，用于自动化一到多个 RBD (RADOS
Block Device) 映像的 \fBrbd map\fP 和 \fBrbd unmap\fP 操作，同时这个脚本也可以由系统管理员随时手动运行，但主要的用途还是把启动时 RBD 映像的映射、挂载（还有关机时的卸载、取消映射）操作自动化，由 init 系统（一个 systemd 的 unit 文件，为此
ceph\-common 软件包打包了 \fBrbdmap.service\fP ）触发。
.sp
此脚本只需一个参数，可以是 map 或 unmap 。
运行时，脚本会分析配置文件（默认为 \fB/etc/ceph/rbdmap\fP ，
但可以用环境变量 \fBRBDMAPFILE\fP 覆盖），
配置文件的每行对应一个要映射、
或取消映射的 RBD 映像。
.sp
配置文件格式为：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
IMAGESPEC RBDOPTS
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
其中， \fBIMAGESPEC\fP 的格式应该是 \fBPOOLNAME/IMAGENAME\fP （存储池名、一个斜线、和映像名），或只有 \fBIMAGENAME\fP ，此时
\fBPOOLNAME\fP 默认为 rbd 。 \fBRBDOPTS\fP 是可选项列表，包含要传入底层 \fBrbd map\fP 命令的参数，这些参数及其取值应该是逗号分隔的字符串：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
PARAM1=VAL1,PARAM2=VAL2,...,PARAMN=VALN
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
此配置会让脚本执行如下的 \fBrbd map\fP 命令：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
rbd map POOLNAME/IMAGENAME \-\-PARAM1 VAL1 \-\-PARAM2 VAL2
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
（ \fBrbd\fP 命令的可用选项请参考其手册页。）
对于包含逗号和等号的参数和数值，
可以加单引号来防止它们被替换。
.sp
运行 \fBrbdmap map\fP 时，此脚本先分析配置文件，对于每个配置了的 RBD 映像，首先尝试映射它（用 \fBrbd map\fP 命令），然后，尝试挂载此映像。
.sp
运行 \fBrbdmap unmap\fP 时，罗列在配置文件内的映像会被依次卸载、取消映射。
.sp
\fBrbdmap unmap\-all\fP 尝试卸载、然后取消当前映射的所有 RBD 映像，不管它们是否在配置文件里。
.sp
如果操作成功， \fBrbd map\fP 操作会把映像映射到类似
\fB/dev/rbdX\fP 的设备，此时，会触发 udev 规则来创建友好的设备名符号链接，如 \fB/dev/rbd/POOLNAME/IMAGENAME\fP ，链接到映射的真实设备。
.sp
挂载、卸载功能要正常运行的话，友好的设备名在 \fB/etc/fstab\fP
里面还必须有相应配置。
.sp
在 \fB/etc/fstab\fP 里面写 RBD 映像的配置条目时，最好加上
noauto （或者 nofail ）挂载选项。这样可防止 init 系统过早地挂载设备——甚至早于相应设备存在时。
（正因为 \fBrbdmap.service\fP 是执行 shell 脚本的，
所以在引导过程中都触发得很晚。）
.SH 实例
.sp
配置实例 \fB/etc/ceph/rbdmap\fP 内含三个 RBD 映像，分别名为
bar1 、 bar2 和 bar3 ，都在 foopool 存储池内：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
foopool/bar1    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
foopool/bar2    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring
foopool/bar3    id=admin,keyring=/etc/ceph/ceph.client.admin.keyring,options=\(aqlock_on_read,queue_depth=1024\(aq
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
此文件的每一行都有两种字符串：映像说明、
和传递给 \fBrbd map\fP 的选项。这两行将被转换为如下的命令：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
rbd map foopool/bar1 \-\-id admin \-\-keyring /etc/ceph/ceph.client.admin.keyring
rbd map foopool/bar2 \-\-id admin \-\-keyring /etc/ceph/ceph.client.admin.keyring
rbd map foopool/bar2 \-\-id admin \-\-keyring /etc/ceph/ceph.client.admin.keyring \-\-options lock_on_read,queue_depth=1024
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
假设这些映像上的文件系统为 XFS ，
其对应的 \fB/etc/fstab\fP 配置可能如下：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
/dev/rbd/foopool/bar1 /mnt/bar1 xfs noauto 0 0
/dev/rbd/foopool/bar2 /mnt/bar2 xfs noauto 0 0
/dev/rbd/foopool/bar3 /mnt/bar3 xfs noauto 0 0
.ft P
.fi
.UNINDENT
.UNINDENT
.sp
创建好映像、并写好 \fB/etc/ceph/rbdmap\fP 配置文件后，
只需启用这个 unit 就可让映像在启动时自动映射和挂载：
.INDENT 0.0
.INDENT 3.5
.sp
.nf
.ft C
systemctl enable rbdmap.service
.ft P
.fi
.UNINDENT
.UNINDENT
.SH 选项
.sp
无
.SH 使用范围
.sp
\fBrbdmap\fP 是 Ceph 的一部分，这是个伸缩力强、开源、分布式的存储系统，更多信息参见 \fI\%https://docs.ceph.com\fP 。
.SH 参考
.sp
rbd(8),
.SH COPYRIGHT
2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons Attribution Share Alike 3.0 (CC-BY-SA-3.0)
.\" Generated by docutils manpage writer.
.
